using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class 实例化植物控制器 : 单例_基础可挂载管理器<实例化植物控制器>
{
    //由于频繁销毁与实例化  应使用对象池  解决
    public Dictionary<Vector2Int, 植物> 后台 = new Dictionary<Vector2Int, 植物>();
    Dictionary<Vector2Int, GameObject> 实例化后台 = new Dictionary<Vector2Int, GameObject>();

    public void 设置数据(string 模板名, Vector2Int pos)
    {
        植物 data = 游戏数据管理器.获取实例.获取植物模板(模板名);
        设置数据(data, pos);
    }
    public void 设置数据(植物 数据, Vector2Int pos)
    {
        if (后台.ContainsKey(pos))
            后台[pos] = 数据;
        else
            后台.Add(pos, 数据);
    }

    public void 销毁数据(Vector2Int pos)
    {
        if (后台.ContainsKey(pos))
            后台.Remove(pos);

        if (实例化后台.ContainsKey(pos))
            实例化后台.Remove(pos);
    }

    public 植物 获取数据(Vector2Int pos)
    {
        if (!后台.ContainsKey(pos))
            return null;

        return 后台[pos];
    }

    public void 实例化道具(Vector2Int pos)
    {
        if (!后台.ContainsKey(pos))
            return;
        if (实例化后台.ContainsKey(pos))
            return;

        植物 道具 = 后台[pos];
        缓存池管理器.获取实例.获取对象("预制体/植物/植物模板", (GameObject a) => {
            a.transform.SetParent(transform);
            实例化植物 b = a.GetComponent<实例化植物>();
            a.name = 道具.名称;
            实例化后台.Add(pos, a);
            b.初始化(道具, pos);
        });
    }

    public void 回收道具(Vector2Int pos)
    {
        if (!实例化后台.ContainsKey(pos))
            return;

        if (!后台.ContainsKey(pos))
            return;

        缓存池管理器.获取实例.添加对象("预制体/植物/植物模板", 实例化后台[pos]);

        实例化后台.Remove(pos);
    }
}
